FIX: Prevent unnecessary cache writes (fixes #34) #58
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See #34.
CachedConfigCollection
is the onlyConfigCollection
implementation that doesn’t implementMutableConfigCollection
, so IMO it’s clearly not designed to be mutable.The nested config collection could theoretically be mutable, but I think that further emphasises that we should remove
__destruct()
here because we have no idea if committing the resulting collection is desirable. If two different code paths modify the collection differently, which (if any) should be cached?In framework when the collection is nested we don’t actually operate on
CachedConfigCollection::$collection
anyway, because we construct a newDeltaConfigCollection
instead:https://github.com/silverstripe/silverstripe-framework/blob/c8990e69495cbc41ab78cca767f264466eecf6cd/src/Core/Config/CoreConfigFactory.php#L52-L55
It looks to me like the only BC risk here is if someone is interacting with this package directly, and nesting a cached config collection, and expecting any changes on the resulting
MutableConfigCollection
to be automatically cached. IMO that’s acceptably low, but I suppose we could diff the entire config array - though I’m not sure if that would negate any performance benefits.Unscientific benchmarks:
Before:
After: